ITS#8655 fix double free on paged search with pagesize 0
authorRyan Tandy <ryan@nardis.ca>
Thu, 18 May 2017 03:07:39 +0000 (20:07 -0700)
committerRyan Tandy <ryan@nardis.ca>
Sun, 16 Jul 2017 19:57:41 +0000 (20:57 +0100)
Fixes a double free when a search includes the Paged Results control
with a page size of 0 and the search base matches the filter.

Gbp-Pq: Name ITS-8655-paged-results-double-free.patch

servers/slapd/back-mdb/search.c

index 5583931671bb410e44f6187ece7516a1b14da8f8..42fafca606d2527bee116d29137c292c133f6bcf 100644 (file)
@@ -1066,7 +1066,8 @@ notfound:
                        /* check size limit */
                        if ( get_pagedresults(op) > SLAP_CONTROL_IGNORED ) {
                                if ( rs->sr_nentries >= ((PagedResultsState *)op->o_pagedresults_state)->ps_size ) {
-                                       mdb_entry_return( op, e );
+                                       if (e != base)
+                                               mdb_entry_return( op, e );
                                        e = NULL;
                                        send_paged_response( op, rs, &lastid, tentries );
                                        goto done;